<!DOCTYPE html>
<html lang="en-US">
    <head>
        <title>Parallel::Jobs - run jobs in parallel with access to their stdout and stderr - metacpan.org</title>
        <link rel="preload" as="fetch" href="https://metacpan.org/account/login_status" crossorigin="anonymous" />
        <link href="https://metacpan.org/_assets/b8ccceeed47a0652049703d99326a9cea4933443.css" rel="stylesheet" type="text/css">
        <script src="https://metacpan.org/_assets/6bfedafe2d7caa915b7d84f61b45936818e3242e.js" type="text/javascript" defer></script>
        <link rel="alternate" type="application/rss+xml" title="Recent CPAN Uploads of Parallel-Jobs - MetaCPAN" href="https://metacpan.org/dist/Parallel-Jobs/releases.rss" />
        <link rel="canonical" href="./Parallel::Jobs.html" />
        <meta name="description" content="run jobs in parallel with access to their stdout and stderr" />
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5">
        <link rel="shortcut icon" href="https://metacpan.org/static/icons/favicon.ico">
        <link rel="apple-touch-icon" sizes="152x152" href="https://metacpan.org/static/icons/apple-touch-icon.png">
        <link rel="search" href="https://metacpan.org/static/opensearch.xml" type="application/opensearchdescription+xml" title="MetaCPAN">
        <script>
          (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
          (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
          m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
          })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

          (function(skey, ga_id){
            ga('create', ga_id, {
              siteSpeedSampleRate : 100,
              storage             : 'none',
              clientId            : localStorage.getItem(skey)
            });
            ga(function(tracker) {
              localStorage.setItem(skey, tracker.get('clientId'));
            });
            ga('send', 'pageview');
          })('ga:clientId', 'UA-27829474-1');
        </script>
<meta name="twitter:card"        content="summary" />
<meta name="twitter:url"         content="https://metacpan.org/pod/Parallel::Jobs" />
<meta name="twitter:title"       content="Parallel::Jobs" />
<meta name="twitter:description" content="run jobs in parallel with access to their stdout and stderr" />
<meta name="twitter:site"        content="metacpan" />
    </head>
    <body>
        <nav class="navbar navbar-default" role="navigation">
            <div class="header-logo-large hidden-xs">
              <a href="https://metacpan.org/" tabindex="0">
                <svg class="logo" aria-label="MetaCPAN">
                  <use class="logo" href="/static/images/metacpan-logo.svg#logo" />
                </svg>
              </a>
            </div>
            <div class="header-logo-icon visible-xs">
              <a href="https://metacpan.org/">
                <svg class="logo" aria-label="MetaCPAN">
                  <use class="logo" href="/static/images/metacpan-logo.svg#dots" />
                </svg>
              </a>
            </div>
            <ul class="nav navbar-nav menu-items hidden-xs hidden-sm">
              <li><a href="https://metacpan.org/about">About</a></li>
              <li><a href="https://metacpan.org/about/sponsors">Sponsor</a></li>
              <li><a href="https://grep.metacpan.org/">grep::cpan</a></li>
              <li><a href="https://metacpan.org/recent">Recent</a></li>
              <li><a href="https://metacpan.org/about/faq">FAQ</a></li>
              <li><a href="https://metacpan.org/tools">Tools</a></li>
              <li><a href="https://fastapi.metacpan.org/">API</a></li>
            </ul>
            <ul class="nav navbar-nav navbar-right">
                <button type="button" class="searchbar-btn visible-xs visible-sm">
                    <i class="fa fa-search button-fa-icon"></i>
                </button>
                <form action="https://metacpan.org/search" class="searchbar-form visible-md visible-lg search-form form-horizontal">
                   <input type="hidden" name="size" id="metacpan_search-size" value="20">
                  <div class="form-group">
                      <div class="search-group">
                        <i class="fa fa-search"></i>
                        <input type="text" name="q" placeholder="Search the CPAN" size="41" autocorrect="off" autocapitalize="off" spellcheck="false" id="metacpan_search-input" class="form-control" value="">
                      </div>
                  </div>
                </form>
                    <li class="icon-slidepanel visible-xs visible-sm">
                      <button data-toggle="slidepanel" data-target=".slidepanel">
                        <span class="button-fa-icon">
                          <i class="fa fa-bars slidepanel-open"></i>
                          <i class="fa fa-times slidepanel-close"></i>
                        </span>
                      </button>
                    </li>
                <form action="https://metacpan.org/account/logout" method="POST" id="metacpan-logout"></form>
                <li class="dropdown logged_in" style="display: none;">
                    <button type="button" class="dropdown-toggle" data-toggle="dropdown">
                      <i class="fa fa-user button-fa-icon logged-in-icon" aria-hidden="true"></i>
                      <i class="fas fa-chevron-down"></i>
                    </button>
                    <ul class="dropdown-menu">
                        <li><a href="https://metacpan.org/account/identities">Identities</a></li>
                        <li><a href="https://metacpan.org/account/profile">Profile</a></li>
                        <li><a href="https://metacpan.org/account/favorite/list">Favorites</a></li>
                        <li>
                            <a href="./Parallel::Jobs.html#" type="button" onclick="$('#metacpan-logout').submit(); return false">
                              Logout
                            </a>
                        </li>
                    </ul>
                </li>
                <li class="dropdown logged_out" style="display: none;">
                    <button type="button" class="dropdown-toggle" data-toggle="dropdown">
                      <i class="fa fa-user button-fa-icon" aria-hidden="true"></i>
                      <i class="fas fa-chevron-down"></i>
                    </button>
                    <ul class="dropdown-menu">
                        <li>
                            <a href="https://metacpan.org/login/github">
                                <i class="fab fa-github fa-fw"></i>
                                GitHub
                            </a>
                        </li>
                        <li>
                            <a href="https://metacpan.org/login/twitter">
                                <i class="fab fa-twitter fa-fw"></i>
                                Twitter
                            </a>
                        </li>
                        <li>
                            <a href="https://metacpan.org/login/google">
                                <i class="fab fa-google fa-fw"></i>
                                Google
                            </a>
                        </li>
                    </ul>
                </li>
                <li class="dropdown logged_placeholder">
                    <button>
                      <i class="fa fa-user button-fa-icon" aria-hidden="true"></i>
                    </button>
                </li>
            </ul>
        </nav>
        <div class="page-content ">
          <!--
          <div class="top-notify-banner">
            <i class="fas fa-info-circle"></i>
          </div>
          -->
          <nav class="sidebar">
            <div class="slidepanel">
              <ul class="nav-list ">
    <li class="nav-header no-margin-top">
      <div class="ttip" data-toggle="tooltip" data-placement="bottom" title="The date that this version of Parallel-Jobs was released.">
      <span class="relatize">18 Apr 2013 13:37:51 UTC</span>
    </li>
  <li>
    Distribution: <a href="https://metacpan.org/dist/Parallel-Jobs">Parallel-Jobs</a>
  </li>
  <li>
    Module version: 0.09
  </li>
  <li>
    <a data-keyboard-shortcut="g s" href="https://metacpan.org/dist/Parallel-Jobs/source/Jobs.pm">Source</a>
    (<a href="https://metacpan.org/dist/Parallel-Jobs/source/Jobs.pm?raw=1">raw</a>)
  </li>
  <li>
    <a data-keyboard-shortcut="g b" href="https://metacpan.org/dist/Parallel-Jobs/source">Browse</a>
    (<a href="https://metacpan.org/dist/Parallel-Jobs/source?raw=1">raw</a>)
  </li>
    <li>
      <a data-keyboard-shortcut="g c" href="https://metacpan.org/dist/Parallel-Jobs/changes">Changes</a>
    </li>
    <li>
      <a class="nopopup" href="https://metacpan.org/dist/Parallel-Jobs/contribute">How to Contribute</a>
    </li>
    <li>
      <a rel="noopener nofollow" data-keyboard-shortcut="g i" href="https://rt.cpan.org/Public/Dist/Display.html?Name=Parallel-Jobs">Issues</a>
      (0)
    </li>
    <li>
      <a rel="noopener nofollow" href="http://matrix.cpantesters.org/?dist=Parallel-Jobs+0.09" title="Matrix">Testers</a>
        <span title="(pass / fail / na)">(<a rel="noopener nofollow" href="https://www.cpantesters.org/distro/P/Parallel-Jobs.html?oncpan=1&amp;distmat=1&amp;version=0.09&amp;grade=2" style="color: #090">14</a> / <a rel="noopener nofollow" href="https://www.cpantesters.org/distro/P/Parallel-Jobs.html?oncpan=1&amp;distmat=1&amp;version=0.09&amp;grade=3" style="color: #900">0</a> / <a rel="noopener nofollow" href="https://www.cpantesters.org/distro/P/Parallel-Jobs.html?oncpan=1&amp;distmat=1&amp;version=0.09&amp;grade=4">0</a>)</span>
    </li>
    <li>
      <a rel="noopener nofollow" href="http://cpants.cpanauthors.org/release/JIK/Parallel-Jobs-0.09">Kwalitee</a>
    </li>
    <li>
      <div class="ttip" data-toggle="tooltip" data-placement="bottom" title="The # people with an indexing permission on Parallel-Jobs who have released something to CPAN in the last 2 years (i.e. the # people likely able to release critical fixes in a timely manner)">
      Bus factor: 1
      </div>
    </li>
    <li>
      <a rel="noopener nofollow" href="http://cpancover.com/latest/Parallel-Jobs-0.09/index.html">75.67% Coverage </a>
    </li>
    <li>
      License: perl_5
    </li>
    <li class="nav-header">Activity</li>
    <li>
<div class="activity-graph">
    <img src="https://metacpan.org/dist/Parallel-Jobs/activity.svg?res=month" />
    <div class="comment">24 month</div>
</div>
    </li>
    <li class="nav-header">Tools</li>
    <li>
      <a itemprop="downloadUrl" href="https://cpan.metacpan.org/authors/id/J/JI/JIK/Parallel-Jobs-0.09.tar.gz">
      Download (<span itemprop="fileSize">6.97KB</span>)</a>
    </li>
    <li>
      <a href="https://explorer.metacpan.org/?url=%2Fmodule%2FJIK%2FParallel-Jobs-0.09%2FJobs.pm">
        MetaCPAN Explorer
      </a>
    </li>
    <li>
      <a href="https://metacpan.org/dist/Parallel-Jobs/permissions">
        Permissions
      </a>
    </li>
    <li>
      <a href="https://metacpan.org/dist/Parallel-Jobs/releases.rss">
        Subscribe to distribution
      </a>
    </li>
    <li>
      <button class="btn btn-link" data-toggle="modal" data-target="#metacpan_install-instructions-dialog">
        Install Instructions
      </button>
    </li>
    <li>
      <form action="https://metacpan.org/search">
        <input type="hidden" name="q" value="dist:Parallel-Jobs">
        <input type="search" name="q" placeholder="Search distribution" class="form-control tool-bar-form">
        <input type="submit" style="display: none">
      </form>
    </li>
    <li>
      <form action="https://grep.metacpan.org/search">
        <input type="hidden" name="qd" value="Parallel-Jobs">
        <input type="hidden" name="source" value="metacpan">
        <input type="search" name="q" placeholder="grep distribution" class="form-control tool-bar-form">
        <input type="submit" style="display: none">
     </form>
    </li>
    <li class="version-jump">
<select onchange="document.location.href=&#39;/release/&#39;+this.value+&#39;/view/Jobs.pm&#39;" class="form-control tool-bar-form">
  <option disabled selected>Jump to version</option>
<option
  disabled
  value="JIK/Parallel-Jobs-0.09"
>0.09
  (JIK on 2013-04-18)</option>
<option
  
  value="JIK/Parallel-Jobs-0.08"
>0.08
  (JIK on 2013-01-15)</option>
<option
  
  value="JIK/Parallel-Jobs-0.07"
>0.07
  (JIK on 2012-12-05)</option>
<option
  
  value="JIK/Parallel-Jobs-0.06"
>0.06
  (JIK on 2012-05-17)</option>
<option
  
  value="JIK/Parallel-Jobs-0.05"
>0.05
  (JIK on 2007-10-18)</option>
<optgroup label="BackPAN">'
<option
  
  value="EVALETO/Parallel-Jobs-0.0.3"
>0.0.3
  (EVALETO on 2006-12-16)</option>
<option
  
  value="JIK/Parallel-Jobs-0.04"
>0.04
  (JIK on 2003-03-18)</option>
<option
  
  value="JIK/Parallel-Jobs-0.03"
>0.03
  (JIK on 2002-11-04)</option>
<option
  
  value="JIK/Parallel-Jobs-0.02"
>0.02
  (JIK on 2002-06-14)</option>
<option
  
  value="JIK/Parallel-Jobs-0.01"
>0.01
  (JIK on 2002-06-13)</option>
</optgroup>
</select>
    </li>
    <li class="version-diff">
<select onchange="document.location.href='/release/JIK/Parallel-Jobs-0.09/diff/' + encodeURIComponent(this.value) + '/Jobs.pm'
" class="form-control tool-bar-form">
  <option disabled selected>Diff with version</option>
<option
  disabled
  value="JIK/Parallel-Jobs-0.09"
>0.09
  (JIK on 2013-04-18)</option>
<option
  
  value="JIK/Parallel-Jobs-0.08"
>0.08
  (JIK on 2013-01-15)</option>
<option
  
  value="JIK/Parallel-Jobs-0.07"
>0.07
  (JIK on 2012-12-05)</option>
<option
  
  value="JIK/Parallel-Jobs-0.06"
>0.06
  (JIK on 2012-05-17)</option>
<option
  
  value="JIK/Parallel-Jobs-0.05"
>0.05
  (JIK on 2007-10-18)</option>
<optgroup label="BackPAN">'
<option
  
  value="EVALETO/Parallel-Jobs-0.0.3"
>0.0.3
  (EVALETO on 2006-12-16)</option>
<option
  
  value="JIK/Parallel-Jobs-0.04"
>0.04
  (JIK on 2003-03-18)</option>
<option
  
  value="JIK/Parallel-Jobs-0.03"
>0.03
  (JIK on 2002-11-04)</option>
<option
  
  value="JIK/Parallel-Jobs-0.02"
>0.02
  (JIK on 2002-06-14)</option>
<option
  
  value="JIK/Parallel-Jobs-0.01"
>0.01
  (JIK on 2002-06-13)</option>
</optgroup>
</select>
    </li>

    <li>
<ul class="dependencies">
  <li class="nav-header">Dependencies</li>
  <li><i class="ttip" title="dynamic_config enabled">unknown</i></li>
  <li>
    <hr>
  </li>
  <li>
    <a href="https://metacpan.org/module/Parallel::Jobs/requires">Reverse dependencies</a>
  </li>
  <li>
    <a href="http://deps.cpantesters.org/?module=Parallel%3A%3AJobs">CPAN Testers List</a>
  </li>
  <li>
    <a href="https://cpandeps.grinnz.com/?dist=Parallel-Jobs">Dependency graph</a>
  </li>
</ul>
    </li>
    <li class="nav-header">Permalinks</li>
    <li>
      <a href="https://metacpan.org/release/JIK/Parallel-Jobs-0.09/view/Jobs.pm">This version</a>
    </li>
    <li>
      <a href="./Parallel::Jobs.html">Latest version</a>
    </li>
    <li>
    </li>
    <li>
    </li>
              </ul>
            </div>
          </nav>
          <div class="content-navigation">
<div class="breadcrumbs">
  <span>
    <a data-keyboard-shortcut="g a" rel="author" href="https://metacpan.org/author/JIK" class="author-name">Jonathan Kamens</a>
  </span>
  <span>&nbsp;/&nbsp;</span>
  <div class="release dist-release status-latest maturity-released">
    <span class="dropdown"><b class="caret"></b></span>
<select onchange="document.location.href=&#39;/release/&#39;+this.value+&#39;/view/Jobs.pm&#39;" class="">
<option
  selected
  value="JIK/Parallel-Jobs-0.09"
>0.09
  (JIK on 2013-04-18)</option>
<option
  
  value="JIK/Parallel-Jobs-0.08"
>0.08
  (JIK on 2013-01-15)</option>
<option
  
  value="JIK/Parallel-Jobs-0.07"
>0.07
  (JIK on 2012-12-05)</option>
<option
  
  value="JIK/Parallel-Jobs-0.06"
>0.06
  (JIK on 2012-05-17)</option>
<option
  
  value="JIK/Parallel-Jobs-0.05"
>0.05
  (JIK on 2007-10-18)</option>
<optgroup label="BackPAN">'
<option
  
  value="EVALETO/Parallel-Jobs-0.0.3"
>0.0.3
  (EVALETO on 2006-12-16)</option>
<option
  
  value="JIK/Parallel-Jobs-0.04"
>0.04
  (JIK on 2003-03-18)</option>
<option
  
  value="JIK/Parallel-Jobs-0.03"
>0.03
  (JIK on 2002-11-04)</option>
<option
  
  value="JIK/Parallel-Jobs-0.02"
>0.02
  (JIK on 2002-06-14)</option>
<option
  
  value="JIK/Parallel-Jobs-0.01"
>0.01
  (JIK on 2002-06-13)</option>
</optgroup>
</select>
    <a data-keyboard-shortcut="g d" class="release-name" href="https://metacpan.org/dist/Parallel-Jobs">Parallel-Jobs-0.09</a>
  </div>
<span class="river-gauge-gauge">
  <svg width="24px"
       height="15px"
       version="1.1"
       xmlns="http://www.w3.org/2000/svg"
       xmlns:xlink="http://www.w3.org/1999/xlink">

    <g>
      <title>        River stage zero &#10;
          No dependents
      </title>

      <rect x="0"  y="0" width="4" height="15" fill="#e4e2e2" />
      <rect x="5"  y="0" width="4" height="15" fill="#e4e2e2" />
      <rect x="10"  y="0" width="4" height="15" fill="#e4e2e2" />
      <rect x="15"  y="0" width="4" height="15" fill="#e4e2e2" />
      <rect x="20"  y="0" width="4" height="15" fill="#e4e2e2" />
    </g>
  </svg>

</span>
<div id="Parallel-Jobs-fav" class="logged_in">
<form action="https://metacpan.org/account/favorite/add" style="display: inline" onsubmit="return favDistribution(this)">
    <input type="hidden" name="remove" value="0">
    <input type="hidden" name="release" value="Parallel-Jobs-0.09">
    <input type="hidden" name="author" value="JIK">
    <input type="hidden" name="distribution" value="Parallel-Jobs">
    <button type="submit" class="favorite"><span></span> ++</button>
</form>
</div>
<div class="logged_out">
<a href="./Parallel::Jobs.html" onclick="alert('Please sign in to add favorites'); return false" class="favorite">
<span></span> ++</a>
</div>
   / <span>Parallel::Jobs</span>
</div>
          </div>
          <main class="content">


<nav class="toc">
  <div class="toc-header"><strong>Contents</strong></div>
<ul>
  <li><a href="./Parallel::Jobs.html#NAME">NAME</a></li>
  <li><a href="./Parallel::Jobs.html#SYNOPSIS">SYNOPSIS</a></li>
  <li><a href="./Parallel::Jobs.html#DESCRIPTION">DESCRIPTION</a></li>
  <li><a href="./Parallel::Jobs.html#AUTHOR">AUTHOR</a></li>
  <li><a href="./Parallel::Jobs.html#CREDITS">CREDITS</a></li>
  <li><a href="./Parallel::Jobs.html#COPYRIGHT-AND-LICENSE">COPYRIGHT AND LICENSE</a></li>
</ul></nav>
<div class="pod anchors">
<h1 id="NAME">NAME</h1>

<p>Parallel::Jobs - run jobs in parallel with access to their stdout and stderr</p>

<h1 id="SYNOPSIS">SYNOPSIS</h1>

<pre><code>  use Parallel::Jobs;
  use Parallel::Jobs qw(start_job watch_jobs);

  $pid = Parallel::Jobs::start_job(&#39;cmd&#39;, ... args ...);
  $pid = Parallel::Jobs::start_job(&#39;cmd ... args ...&#39;);
  $pid = Parallel::Jobs::start_job({ stdin_file =&gt; filename |
                                     stdin_handle =&gt; *HANDLE,
                                     stdout_handle =&gt; *HANDLE |
                                     stdout_capture =&gt; 1,
                                     stderr_handle =&gt; *HANDLE |
                                     stderr_capture =&gt; 1 },
                                     ... cmd as above ...);

  ($pid, $event, $data) = Parallel::Jobs::watch_jobs();
  ($pid, $event, $data) = Parallel::Jobs::watch_jobs({nohang =&gt; 1});</code></pre>

<h1 id="DESCRIPTION">DESCRIPTION</h1>

<p>The Parallel::Jobs module allows you to run multiple jobs in parallel with fine-grained control over their stdin, stdout and stderr. That control is the biggest difference between this module and others such as Parallel::ForkManager.</p>

<p>You can specify the command to run as a single string or as a list specifying the command and its arguments, as in <a href="https://metacpan.org/pod/IPC::Open3">IPC::Open3</a>. If your version of IPC::Open3 supports &#39;-&#39; as the command, Parallel::Jobs::start_job() will fork to a Perl child in a manner analogous to <code>open(FOO, &quot;-|&quot;)</code>.</p>

<p>If your first argument is a reference to a hash, it can specify the parameters shown above. By default, stdin for each job is set to /dev/null and stdout and stderr are set to the stdout and stderr of the calling process.</p>

<p>If you specify stdin_handle, stdout_handle or stderr_handle, the handle will be copied the original handle will thus not be modified.</p>

<p>Each time you call Parallel::Jobs::watch_jobs(), it will return the process ID of the job with which an event has occured, the event type, and the data associated with that event. If there are no more jobs to watch, watch_jobs() will return undef. If you want to poll for pending events without hanging if there are none currently available, specify a hash with the key &quot;nohang&quot; set to a true value.</p>

<p>The relevant events are as follows:</p>

<dl>

<dt id="EXIT">EXIT</dt>
<dd>

<p>The indicated process has exited. The returned data is the value of $? from the exited process. The process has already been waited for (i.e., you don&#39;t need to do any cleanup on it).</p>

</dd>
<dt id="STDOUT">STDOUT</dt>
<dd>

<p>Output has been received on stdout. The returned data is the output that was received, or an empty string if EOF was received.</p>

</dd>
<dt id="STDERR">STDERR</dt>
<dd>

<p>Output has been received on stderr. The returned data is the output that was received, or an empty string if EOF was received.</p>

</dd>
</dl>

<p>Note that it is possible to receive STDOUT or STDERR events from a process after its EXIT event, i.e., you may receive an EXIT event before you&#39;ve read all of a process&#39;s output.</p>

<h1 id="AUTHOR">AUTHOR</h1>

<p>Jonathan Kamens &lt;jik@kamens.us&gt;</p>

<h1 id="CREDITS">CREDITS</h1>

<p>This module was written and is maintained by Jonathan Kamens (originally &lt;jik@worldwinner.com&gt;, currently &lt;jik@kamens.us&gt;). In addition, the following people contributed bug fixes, enhancements, and/or useful suggestions:</p>

<dl>

<dt id="Paul-GABORIT-&lt;gaborit@enstimac.fr&gt;"><a id="Paul"></a><a id="Paul-GABORIT--gaborit-enstimac.fr"></a>Paul GABORIT &lt;gaborit@enstimac.fr&gt;</dt>
<dd>

</dd>
<dt id="Adam-Spiers-&lt;perl@adamspiers.org&gt;"><a id="Adam"></a><a id="Adam-Spiers--perl-adamspiers.org"></a>Adam Spiers &lt;perl@adamspiers.org&gt;</dt>
<dd>

</dd>
<dt id="Greg-Lindahl-&lt;greg@blekko.com&gt;"><a id="Greg"></a><a id="Greg-Lindahl--greg-blekko.com"></a>Greg Lindahl &lt;greg@blekko.com&gt;</dt>
<dd>

</dd>
</dl>

<h1 id="COPYRIGHT-AND-LICENSE"><a id="COPYRIGHT"></a>COPYRIGHT AND LICENSE</h1>

<dl>

<dt id="Copyright-2002-2003-by-WorldWinner.com,-Inc."><a id="Copyright"></a><a id="Copyright-2002-2003-by-WorldWinner.com--Inc"></a>Copyright 2002-2003 by WorldWinner.com, Inc.</dt>
<dd>

</dd>
<dt id="Copyright-2012,-2013-Jonathan-Kamens."><a id="Copyright1"></a><a id="Copyright-2012--2013-Jonathan-Kamens"></a>Copyright 2012, 2013 Jonathan Kamens.</dt>
<dd>

</dd>
</dl>

<p>This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.</p></div>

<div id="metacpan_install-instructions-dialog" class="modal fade">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
        <h4 class="modal-title">Module Install Instructions</h4>
      </div>
      <div class="modal-body">
        <p>To install Parallel::Jobs, copy and paste the appropriate command in to your terminal.</p>
        <p><a href="https://metacpan.org/dist/App-cpanminus/view/bin/cpanm">cpanm</a></p>
        <pre><code>cpanm Parallel::Jobs</code></pre>
        <p><a href="https://metacpan.org/pod/CPAN">CPAN shell</a></p>
        <pre><code>perl -MCPAN -e shell
install Parallel::Jobs</code></pre>
        <p>For more information on module installation, please visit <a href="https://www.cpan.org/modules/INSTALL.html">the detailed CPAN module installation guide</a>.</p>
      </div>
      <div class="modal-footer">
        <a href="./Parallel::Jobs.html#" data-dismiss="modal" class="btn">Close</a>
      </div>
    </div>
  </div>
</div>
          </main>
          <div class="content-pagination">
          </div>
        </div>
        <footer class="footer">
          <div class="footer-container">
            <div class="footer-social">
              <div class="footer-link footer-logo">
                <a href="https://metacpan.org/">
                  <img src="https://metacpan.org/static/images/metacpan-logo.svg" alt="MetaCPAN" />
                </a>
              </div>
              <a class="footer-social-link" href="https://github.com/metacpan">
                <i class="fab fa-github-square"></i>
              </a>
              <a class="footer-social-link" href="https://fosstodon.org/@metacpan">
                <i class="fab fa-mastodon"></i>
              </a>
            </div>
            <div class="footer-links">
              <div class="footer-link">
                  <a href="https://metacpan.org/about">About</a>
              </div>
              <div class="footer-link">
                  <a href="https://metacpan.org/about/sponsors">Sponsor</a>
              </div>
              <div class="footer-link">
                  <a href="https://grep.metacpan.org">grep::cpan</a>
              </div>
              <div class="footer-link">
                  <a href="https://metacpan.org/recent">Recent</a>
              </div>
              <div class="footer-link">
                  <a href="https://metacpan.org/about/faq">FAQ</a>
              </div>
              <div class="footer-link">
                  <a href="https://metacpan.org/tools">Tools</a>
              </div>
              <div class="footer-link">
                  <a href="https://fastapi.metacpan.org/">API</a>
              </div>
              <div class="footer-link">
                  <a href="https://www.perl.org/">Perl.org</a>
              </div>
            </div>
            <div class="footer-sponsors">
              <a class="footer-sponsor-link" target="_blank" href="https://www.bytemark.co.uk/" rel="noopener">
                <img class="footer-sponsor-bytemark" src="https://metacpan.org/static/images/sponsors/bytemark_logo.svg" alt="Bytemark logo">
              </a>
              <a class="footer-sponsor-link" target="_blank" href="https://www.liquidweb.com/" rel="noopener">
                <img class="footer-sponsor-liquidweb" src="https://metacpan.org/static/images/sponsors/liquidweb_logo.png" alt="liquidweb logo">
              </a>
              <a class="footer-sponsor-link" target="_blank" href="https://deriv.com/careers/" rel="noopener">
                <img class="footer-sponsor-deriv" src="https://metacpan.org/static/images/sponsors/deriv.svg" alt="Deriv logo">
              </a>
              <a class="footer-sponsor-link" target="_blank" href="https://geocode.xyz" rel="noopener">
                <img class="footer-sponsor-geocode" src="https://metacpan.org/static/images/sponsors/geocodelogo.svg" alt="Geocode logo">
              </a>
              <a class="footer-sponsor-link" target="_blank" href="https://www.fastly.com/" rel="noopener">
                <img class="footer-sponsor-fastly" src="https://metacpan.org/static/images/sponsors/fastly_logo.svg" alt="Fastly logo">
              </a>
              <a class="footer-sponsor-link" target="_blank" href="https://opencagedata.com" rel="noopener">
                <img class="footer-sponsor-opencage" src="https://metacpan.org/static/images/sponsors/open-cage.svg" alt="OpenCage logo">
              </a>
            </div>
          </div>
        </footer>
        <div class="modal fade" tabindex="-1" role="dialog" id="metacpan_keyboard-shortcuts">
          <div class="modal-dialog">
            <div class="modal-content">
              <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h4 class="modal-title">Keyboard Shortcuts</h4>
              </div>
              <div class="modal-body row">
<div class="col-md-6">
  <table class="table keyboard-shortcuts">
    <thead>
      <tr>
        <th></th>
        <th>Global</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td class="keys">
          <kbd>s</kbd>
        </td>
        <td>Focus search bar</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>?</kbd>
        </td>
        <td>Bring up this help dialog</td>
      </tr>
    </tbody>
  </table>

  <table class="table keyboard-shortcuts">
    <thead>
      <tr>
        <th></th>
        <th>GitHub</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>p</kbd>
        </td>
        <td>Go to pull requests</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>i</kbd>
        </td>
        <td>go to github issues (only if github is preferred repository)</td>
      </tr>
    </tbody>
  </table>
</div>

<div class="col-md-6">
  <table class="table keyboard-shortcuts">
    <thead>
      <tr>
        <th></th>
        <th>POD</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>a</kbd>
        </td>
        <td>Go to author</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>c</kbd>
        </td>
        <td>Go to changes</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>i</kbd>
        </td>
        <td>Go to issues</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>d</kbd>
        </td>
        <td>Go to dist</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>r</kbd>
        </td>
        <td>Go to repository/SCM</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>s</kbd>
        </td>
        <td>Go to source</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>b</kbd>
        </td>
        <td>Go to file browse</td>
      </tr>

    </tbody>
  </table>
</div>

<div class="col-md-12">
  <table class="table keyboard-shortcuts">
    <thead>
      <tr>
        <th></th>
        <th>Search terms</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><em>module:</em> (e.g. <a href="https://metacpan.org/search?q=module%3APlugin">module:Plugin</a>)</td>
      </tr>
      <tr>
        <td><em>distribution:</em> (e.g. <a href="https://metacpan.org/search?q=distribution%3ADancer+auth">distribution:Dancer auth</a>)</td>
      </tr>
      <tr>
        <td><em>author:</em> (e.g. <a href="https://metacpan.org/search?q=author%3ASONGMU+Redis">author:SONGMU Redis</a>)</td>
      </tr>
      <tr>
        <td><em>version:</em> (e.g. <a href="https://metacpan.org/search?q=version%3A1.00">version:1.00</a>)</td>
      </tr>
    </tbody>
  </table>
</div>
              </div>
              <div class="modal-footer"></div>
            </div>
          </div>
        </div>
    </body>
</html>
